#pragma once
#include <string>
#include "refc_ptr.h"
#include "widget.h"
#include "window_impl_base.h"

namespace krryn{
namespace gui{
	class window : public widget{
	public:
		typedef window_impl_base impl;
		typedef core::refc_ptr<window> ptr;
		typedef window_initializer with;

		window(const with &a_Initializer);

		virtual void *handle();

	private:
		impl *m_Pimpl;
	};

	class window_initializer
		: public widget_initializer<window_initializer>{
	public:
		window_initializer();

		window_initializer &title(const std::string &a_Title);

		window::ptr create();

		std::string m_Title;
	};
}
}